﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Core;
using System.Configuration;
using Crosland.Automotriz.Logic.ControlExeption;

namespace Crosland.Automotriz.Web.Repuestos
{
    public partial class wFrmRegistroMetasGenerar : System.Web.UI.Page
    {
        static List<listaMetasVendedor> listmetavendedor;
           static List<listaMetasOficina> listmetaoficina;
           string idNegocio = ConfigurationManager.AppSettings["Negocio"];
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {

                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", "JavaScript:confirmSubmitResult();", true);
                listmetavendedor = new List<listaMetasVendedor>();
                listmetaoficina = new List<listaMetasOficina>();
                this.ListaGrupoArticulo();
                cboGrupoArticulo.SelectedIndex = 0;
                this.ListaVendedor();
                cboVendedor.SelectedIndex = 0;
                cboAnio.Value = Convert.ToInt32(DateTime.Now.Year);
                cboMes.SelectedIndex= Convert.ToInt32(DateTime.Now.Month)-1;
                this.ListaCanalDistribucion();
                CboCanalDistribrucion.SelectedIndex = 0;
                this.ListaOficinaVenta();
                cboOficina.SelectedIndex = 0;
                this.ListaGrupoArticuloOficina();
                cboGrupoArticuloOficina.SelectedIndex = 0;
                cboAnioOficina.Value = Convert.ToInt32(DateTime.Now.Year);
                cboMesOficina.SelectedIndex = Convert.ToInt32(DateTime.Now.Month)-1;
                this.ValidaOperacion();
            }
        }

        private void ValidaOperacion() {
           if (Session["vendedor"].ToString() == "Vendedor")
            {
                RPMetasVendedor.ClientVisible = true;
                RPMetasOficina.ClientVisible = false;
                lbltitulo.Text = "vendedor";
            }
            else
            {
                RPMetasOficina.ClientVisible = true;
                RPMetasVendedor.ClientVisible = false;
                lbltitulo.Text = "oficina";
            }
          }

        private void ListaGrupoArticulo() {

            try
            {
                clsTd_Grupo_ArticuloLogic clsTd_grupo_articulo = new clsTd_Grupo_ArticuloLogic();
                cboGrupoArticulo.DataSource = clsTd_grupo_articulo.lista();
                cboGrupoArticulo.TextField = "DES_GRUPO_ARTICULO";
                cboGrupoArticulo.ValueField = "ID_GRUPO_ARTICULO";
                cboGrupoArticulo.DataBind();

            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "ListaGrupoArticulo");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "ListaGrupoArticulo");
            }
            
        }

        private void ListaVendedor() {

            try
            {
                clsTD_VendedorBL clstd_vendedor = new clsTD_VendedorBL();
                cboVendedor.DataSource = clstd_vendedor.ListaVendedor();
                cboVendedor.TextField = "NOMBRE_APELLIDO";
                cboVendedor.ValueField = "ID_VENDEDOR";
                cboVendedor.DataBind();


            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "ListaVendedor");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "ListaVendedor");
            }
        }

        private void AgregarGrillaVendedor() {

            try
            {
                listaMetasVendedor obj = new listaMetasVendedor();
                obj.ID_UBIC_VEND_CAB = Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]);
                obj.ID_VENDEDOR = Convert.ToInt32(cboVendedor.SelectedItem.Value);
                obj.ANIO = cboAnio.Text;
                obj.ID_MES = Convert.ToString(cboMes.SelectedItem.Value);
                obj.MES = cboMes.Text;
                obj.ID_GRUPO_ARTICULO = Convert.ToInt32(cboGrupoArticulo.SelectedItem.Value);
                obj.NRORUEDAS = Convert.ToString(cboNroRuedas.SelectedItem.Value);
                obj.CANT = Convert.ToInt32(txtCantidad.Text);
                obj.DES_GRUPO_ARTICULO = cboGrupoArticulo.Text;
                obj.NOM_VENDEDOR = cboVendedor.Text;
                listmetavendedor.Add(obj);
                grdVendedor.DataSource = listmetavendedor;
                grdVendedor.DataBind();   

            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "AgregarGrillaVendedor");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "AgregarGrillaVendedor");
            }


        }

        private bool ComapararGridVendedor()
        {


            foreach (listaMetasVendedor row in listmetavendedor)
            {
                if (row.ID_UBIC_VEND_CAB == Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]) && row.ID_VENDEDOR == Convert.ToInt32(cboVendedor.SelectedItem.Value) && row.ANIO==cboAnio.Text && row.MES==cboMes.Text && row.ID_GRUPO_ARTICULO==Convert.ToInt32(cboGrupoArticulo.SelectedItem.Value) )
                {
                    return true;
                }
            }

            return false;


        }

        private void GrabarVendedor()
        {

            clsT_Ven_Metas_VendedorLogic clst_vendedor = new clsT_Ven_Metas_VendedorLogic();

            bool estado =false;
            try
            {
               
               
                foreach (listaMetasVendedor row in listmetavendedor)
                {
                    T_VEN_METAS_VENDEDOR t_ven_metas_vendedor = new T_VEN_METAS_VENDEDOR();
                    t_ven_metas_vendedor.ID_UBIC_VEND_CAB = Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]);
                    t_ven_metas_vendedor.ID_VENDEDOR = row.ID_VENDEDOR;
                    t_ven_metas_vendedor.ANIO = row.ANIO;
                    t_ven_metas_vendedor.MES = row.ID_MES;
                    t_ven_metas_vendedor.ID_GRUPO_ARTICULO = row.ID_GRUPO_ARTICULO;
                    t_ven_metas_vendedor.NroRuedas = row.NRORUEDAS;
                    t_ven_metas_vendedor.CANT = row.CANT;
                    estado=clst_vendedor.Insertar(t_ven_metas_vendedor);

                    if (estado)
                    {


                        lblmsj.Text = String.Empty;
                        lblmsj.Text = "Se grabó correctamente ";
                        string script = "ShowMsj();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }
                    else {
                        lblmsj.Text = String.Empty;
                        lblmsj.Text = "Error en la grabación por favor vuelva intentarlo";
                        string script = "ShowMsj();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    
                    }

                }

            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "GrabarVendedor");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "GrabarVendedor");
            }


        }
        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (Exception e)
            {
                GuardarExceptionLog(e.Message, e, "GuardarExceptionLog");
                MensajesError(e.Message, e, "GuardarExceptionLog");
            }

        }

        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }
        private struct listaMetasVendedor {

            public int ID_UBIC_VEND_CAB { get; set; }
            public int ID_VENDEDOR { get; set; }
            public string ANIO { get; set; }
            public string MES { get; set; }
            public string ID_MES { get; set; }
            public int ID_GRUPO_ARTICULO { get; set; }
            public string NRORUEDAS { get; set; }
            public int CANT { get; set; }
            public string NOM_VENDEDOR { get; set; }
            public string DES_GRUPO_ARTICULO { get; set; }

        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                clsT_Ven_Metas_VendedorLogic clst_vendedor = new clsT_Ven_Metas_VendedorLogic();
                int contador = clst_vendedor.BusquedaRegistroExistentes(Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]), Convert.ToInt32(cboVendedor.SelectedItem.Value), Convert.ToString(cboAnio.SelectedItem.Value), Convert.ToString(cboMes.SelectedItem.Value), Convert.ToInt32(cboGrupoArticulo.SelectedItem.Value));

                if (ComapararGridVendedor())
                {

                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "El registro ya esta agregado por favor agregue otro ";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }
                else
                {
                    if (contador > 0)
                    {
                        lblmsj.Text = String.Empty;
                        lblmsj.Text = "En la base de datos ya está registrado por favor agregue otro!";
                        string script = "ShowMsj();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                    }
                    else
                    {

                        this.AgregarGrillaVendedor();

                    }

                }
            }
            catch {
            }

        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {

            if (Session["vendedor"].ToString() == "Vendedor")
            {
                this.GrabarVendedor();
            }
            else
            {
                this.GrabarOficina();
            }
            
            
        }

        private void ListaCanalDistribucion() {
            clsTd_Canal_DistribLogic clst_canal_distribucion = new clsTd_Canal_DistribLogic();
            CboCanalDistribrucion.DataSource = clst_canal_distribucion.lista();
            CboCanalDistribrucion.TextField = "DES_CANAL_DISTRIB";
            CboCanalDistribrucion.ValueField = "ID_CANAL_DISTRIB";
            CboCanalDistribrucion.DataBind();
        
        }

        private void ListaOficinaVenta() {
            clsTd_Oficina_VentaLogic clstd_oficina_venta = new clsTd_Oficina_VentaLogic();
            cboOficina.DataSource = clstd_oficina_venta.lista();
            cboOficina.TextField = "DES_OFI_VTA";
            cboOficina.ValueField = "ID_OFI_VTA";
            cboOficina.DataBind();

        
        }

        private void ListaGrupoArticuloOficina() {

            clsTd_Grupo_ArticuloLogic clsTd_grupo_articulo = new clsTd_Grupo_ArticuloLogic();
            cboGrupoArticuloOficina.DataSource = clsTd_grupo_articulo.lista();
            cboGrupoArticuloOficina.TextField = "DES_GRUPO_ARTICULO";
            cboGrupoArticuloOficina.ValueField = "ID_GRUPO_ARTICULO";
            cboGrupoArticuloOficina.DataBind();
        
        }

        private struct listaMetasOficina {
            public int ID_UBIC_VEND_CAB { get; set; }
            public int ID_CANAL_DISTRIB { get; set; }
            public int ID_OFI_VTA { get; set; }
            public string ANIO { get; set; }
            public string MES { get; set; }
            public string ID_MES { get; set; }
            public int ID_GRUPO_ARTICULO { get; set; }
            public string NroRuedas { get; set; }
            public int CANT { get; set; }
            public string NOM_OFICINA { get; set; }
            public string DES_GRUPO_ARTICULO { get; set; }
        }

        private void AgregarGrillaOficina()
        {

            try
            {
                listaMetasOficina obj = new listaMetasOficina();
                obj.ID_UBIC_VEND_CAB = Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]);
                obj.ID_OFI_VTA = Convert.ToInt32(cboOficina.SelectedItem.Value);
                obj.ANIO = cboAnioOficina.Text;
                obj.ID_MES = Convert.ToString(cboMesOficina.SelectedItem.Value);
                obj.MES = cboMesOficina.Text;
                obj.ID_GRUPO_ARTICULO = Convert.ToInt32(cboGrupoArticuloOficina.SelectedItem.Value);
                obj.NroRuedas = Convert.ToString(cboNroRuedasOficina.SelectedItem.Value);
                obj.CANT = Convert.ToInt32(txtCantidadOficina.Text);
                obj.DES_GRUPO_ARTICULO = cboGrupoArticuloOficina.Text;
                obj.NOM_OFICINA = cboOficina.Text;
                obj.ID_CANAL_DISTRIB = Convert.ToInt32(CboCanalDistribrucion.SelectedItem.Value);
                listmetaoficina.Add(obj);
                grdOficina.DataSource = listmetaoficina;
                grdOficina.DataBind();

            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "AgregarGrillaOficina");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "AgregarGrillaOficina");
            }

        }

        private bool ComapararGridOficina()
        {


            foreach (listaMetasOficina row in listmetaoficina)
            {
                if (row.ID_UBIC_VEND_CAB == Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]) && row.ID_OFI_VTA == Convert.ToInt32(cboOficina.SelectedItem.Value) && row.ANIO == cboAnioOficina.Text && row.MES == cboMesOficina.Text && row.ID_GRUPO_ARTICULO == Convert.ToInt32(cboGrupoArticuloOficina.SelectedItem.Value) && row.ID_CANAL_DISTRIB==Convert.ToInt32(CboCanalDistribrucion.SelectedItem.Value))
                {
                    return true;
                }
            }

            return false;


        }


        private void GrabarOficina()
        {
            //int i = 0;
            clsT_Ven_Metas_OficinaLogic clst_oficina = new clsT_Ven_Metas_OficinaLogic();
           
            bool estado = false;
            try
            {

                foreach (listaMetasOficina row in listmetaoficina)
                {
                    T_VEN_METAS_OFICINA t_ven_metas_oficina = new T_VEN_METAS_OFICINA();
                    t_ven_metas_oficina.ID_UBIC_VEND_CAB = Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]);
                    t_ven_metas_oficina.ID_OFI_VTA = row.ID_OFI_VTA;
                    t_ven_metas_oficina.ANIO = row.ANIO;
                    t_ven_metas_oficina.MES = row.ID_MES;
                    t_ven_metas_oficina.ID_GRUPO_ARTICULO = row.ID_GRUPO_ARTICULO;
                    t_ven_metas_oficina.NroRuedas = row.NroRuedas;
                    t_ven_metas_oficina.CANT = row.CANT;
                    t_ven_metas_oficina.ID_CANAL_DISTRIB = row.ID_CANAL_DISTRIB;
                    estado = clst_oficina.Insertar(t_ven_metas_oficina);

                    if (estado)
                    {


                        lblmsj.Text = String.Empty;
                        lblmsj.Text = "Se grabó correctamente ";
                        string script = "ShowMsj();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }
                    else
                    {
                        lblmsj.Text = String.Empty;
                        lblmsj.Text = "Error en la grabación por favor vuelva intentarlo";
                        string script = "ShowMsj();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                    }

                }

            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "ListaCboVendedor");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "ListaCboVendedor");
            }




        }

        protected void btnAgregarOficina_Click(object sender, EventArgs e)
        {



            clsT_Ven_Metas_OficinaLogic clst_oficina = new clsT_Ven_Metas_OficinaLogic();
            int contador = clst_oficina.BusquedaRegistroExistentes(Convert.ToInt32(Session["ID_UBIC_VEND_CAB"]), Convert.ToInt32(cboOficina.SelectedItem.Value), Convert.ToString(cboAnioOficina.SelectedItem.Value), Convert.ToString(cboMesOficina.SelectedItem.Value), Convert.ToInt32(cboGrupoArticuloOficina.SelectedItem.Value),Convert.ToInt32(CboCanalDistribrucion.SelectedItem.Value));

            if (ComapararGridOficina())
            {

                lblmsj.Text = String.Empty;
                lblmsj.Text = "El registro ya esta agregado por favor agregue otro ";
                string script = "ShowMsj();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

            }
            else
            {
                if (contador > 0)
                {
                    lblmsj.Text = String.Empty;
                    lblmsj.Text = "En la base de datos ya está registrado por favor agregue otro!";
                    string script = "ShowMsj();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }
                else
                {

                    this.AgregarGrillaOficina();

                }

            }

        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Repuestos/wFrmRegistroMetasListado.aspx?id=" + idNegocio);
        }

    }

}